#include <stdio.h>
//int             main()
//{
//   double a,b,c,t;
//   scanf("%lf%lf%lf%lf",&a,&b,&c,&t);
//   double rest=1.0-(1.0/a+1.0/b)*t;
//   double t1=rest/(1.0/a+1.0/b-1.0/c);
//   printf("%.2lf",t1+t);
////   double va=1.0/a,vb=1.0/b,vc=1.0/c;
////   double res=(1-(va+vb)*t)/(va+vb-vc);
////   printf("%.2lf",res);
//   
//   return 0;
//}
//#include <stdio.h>
//int main()
//{
//     int a;
//    scanf("%d",&a);
//    int c=(a%10)*10+a/10;
//    printf("%d",c);
//    return 0;
//    return 0;
//}
//int main()
//{
//   int n;
//   scanf("%d",&n);
//   long long int sum=0;
//   
//   printf("%lld",1ll*n*(n+1)/2);
//   return 0;
//}
//int main()
//{
//  char s[10];
//   scanf("%s",s);
//   int a=0,b=0,c=0,d=0;
//   sscanf(s,"%1d%1d%1d%1d",&a,&b,&c,&d);
//   printf("%d",a+b+c+d);
//   return 0;
//}

//int main()
//{
//    int n=0;
//    scanf("%d",&n);
//    if(n==0)
//    printf("HEHE\n");
//    else if(n<60)
//    printf("FAIL\n");
//    else if (n<75)
//    printf("MEDIUM\n");
//    else if(n<=100)
//    printf("GOOD\n") ;
//    return 0;
//}
//int main()
//{
//    int n=0;
//    scanf("%d",&n);
//    switch(n)
//    {
//        case 1: printf("n=1");break;
//        case 2: printf("n=2");break;
//        case 3: printf("n=3");break;
//        default: printf("error");
//    }
//    return 0;
//}

//int main()
//{
//    int n=0;
//    scanf("%d",&n);
//    switch(n)
//    {
//        case 1: printf("n=1");
//        case 2: printf("n=2");
//        case 3: printf("n=3");break;
//        default: printf("error");
//    }
//    return 0;
//}

#include <stdio.h>
int main()
{
    int y,m;
    scanf("%d%d",&y,&m);
    if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
    printf("31");
    else if(m==4||m==6||m==9||m==11)
    printf("30");
    else if(m==2&&(y%400==0||(y%4==0&&y%100!=0)))
    printf("29");
    else
    printf("28");
    return 0;
 } 
















